Learn R Programming

dcemriS4 (version 0.51)

Apparent Diffusion Coefficient: Estimate the Apparent Diffusion Coefficient (ADC)

Description

Estimation of apparent diffusion coefficient (ADC) values, using a single exponential function, is achieved through nonlinear optimization.

Usage

adc.lm(signal, b, guess, control=minpack.lm::nls.lm.control())
## S3 method for class 'array':
ADC.fast(dwi, bvalues, dwi.mask,
         control=minpack.lm::nls.lm.control(maxiter=150), 
         multicore=FALSE, verbose=FALSE)

Arguments

signal
Signal intensity vector as a function of b-values.
b,bvalues
Diffusion weightings (b-values).
guess
Initial values of $S_0$ and $D$.
control
An optional list of control settings for nls.lm. See nls.lm.control for the names of the settable control values and their effect.
dwi
Multidimensional array of diffusion-weighted images.
dwi.mask
Logical array that defines the voxels to be analyzed.
multicore
is a logical variable (default = FALSE) that allows parallel processing via multicore.
verbose
Additional information will be printed when verbose=TRUE.

Value

  • A list structure is produced with estimates of $S_0$, $D$ and information about the convergence of the nonlinear optimization routine.

Details

The adc.lm function estimates parameters for a vector of observed MR signal intensities using the following relationship $$S(b) = S_0 \exp(-bD),$$ where $S_0$ is the baseline signal intensity and $D$ is the apparent diffusion coefficient (ADC). It requires the routine nls.lm that applies the Levenberg-Marquardt algorithm. Note, low b-values ($<50$ or="" $<100$="" depending="" on="" who="" you="" read)="" should="" be="" avoided="" in="" the="" parameter="" estimation="" because="" they="" do="" not="" represent="" information="" about="" diffusion="" of="" water="" tissue.<="" p="">

The ADC.fast function rearranges the assumed multidimensional (2D or 3D) structure of the DWI data into a single matrix to take advantage of internal R functions instead of loops, and called adc.lm.

References

Buxton, R.B. (2002) Introduction to Functional Magnetic Resonance Imaging: Principles & Techniques, Cambridge University Press: Cambridge, UK.

Callahan, P.T. (2006) Principles of Nuclear Magnetic Resonance Microscopy, Clarendon Press: Oxford, UK. Koh, D.-M. and Collins, D.J. (2007) Diffusion-Weighted MRI in the Body: Applications and Challenges in Oncology, American Journal of Roentgenology, 188, 1622-1635.

See Also

nls.lm

Examples

Run this code
S0 <- 10
b <- c(0, 50, 400, 800)  # units?
D <- 0.7e-3              # mm^2 / sec (normal white matter)

## Signal intensities based on the (simplified) Bloch-Torry equation
dwi <- function(S0, b, D) {
  S0 * exp(-b*D)
}

set.seed(1234)
signal <- array(dwi(S0, b, D) + rnorm(length(b), sd=0.15),
                c(rep(1,3), length(b)))
ADC <- ADC.fast(signal, b, array(TRUE, rep(1,3)))
unlist(ADC) # text output

par(mfrow=c(1,1)) # graphical output
plot(b, signal, xlab="b-value", ylab="Signal intensity")
lines(seq(0,800,10), dwi(S0, seq(0,800,10), D), lwd=2, col=1)
lines(seq(0,800,10), dwi(ADC$S0, seq(0,800,10), ADC$D), lwd=2, col=2)
legend("topright", c("True","Estimated"), lwd=2, col=1:2)

Run the code above in your browser using DataLab